/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * VentanaPrincipal.java
 *
 * Created on 23/07/2011, 01:01:42 PM
 */
package co.srm.vistas;

import co.srm.utilidades.ConfiguracionInicial;
import co.srm.utilidades.EnviarMailBackup;
import co.srm.entidades.DatosFinanciero;
import co.srm.entidades.Prestamo;
import co.srm.entidades.Usuario;
import co.srm.manejadores.ManejadorDatosFinancieros;
import co.srm.manejadores.ManejadorPrestamo;
import co.srm.vista.Acercade;
import co.srm.vistas.funcionales.VentanaEmpresa;
import co.srm.vistas.funcionales.VentanaPago;
import co.srm.vistas.funcionales.VentanaPersona;
import co.srm.vistas.funcionales.VentanaPrestamo;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import co.srm.utilidades.Control;
import co.srm.vistas.funcionales.BusquedaPagos;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author JORGE
 */
public class VentanaPrincipal extends javax.swing.JFrame {

    public static double totalSesion = 0;
    ManejadorDatosFinancieros mDatos=null;
    ConfiguracionInicial backup=new ConfiguracionInicial("backupdb.properties");

    /** Creates new form VentanaPrincipal */
    public VentanaPrincipal() {
        initComponents();
        setLocationRelativeTo(null);
        setExtendedState(MAXIMIZED_BOTH);
        try {
            backup.cargarArchivo();
        } catch (IOException ex) {
            Logger.getLogger(VentanaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
        }
        mDatos=new ManejadorDatosFinancieros();
        DatosFinanciero elDato=mDatos.DatoFinancieroByFecha(new Date());
        if(elDato!=null)
        {
            totalSesion = elDato.getRecaudo();
        }
        recaudoHoy.setText(String.valueOf(totalSesion));
//       listarNovedades();
    }

    public static void mostrar() {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                VentanaPrincipal v = new VentanaPrincipal();
                v.setVisible(true);
                listarNovedades();
            } // fin del run
        });

    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tablaNovedades = new org.jdesktop.swingx.JXTable();
        jLabel2 = new javax.swing.JLabel();
        nNovedades = new javax.swing.JTextField();
        jLabel4 = new javax.swing.JLabel();
        recaudoHoy = new javax.swing.JTextField();
        jLabel5 = new javax.swing.JLabel();
        jMenuBar1 = new javax.swing.JMenuBar();
        menuAdministracion = new javax.swing.JMenu();
        menuItemPersona = new javax.swing.JMenuItem();
        jMenuItem3 = new javax.swing.JMenuItem();
        backupDatosDB = new javax.swing.JMenuItem();
        menuItemCerrar = new javax.swing.JMenuItem();
        menuPrestamos = new javax.swing.JMenu();
        menuItemPrestamo = new javax.swing.JMenuItem();
        pagosDeUnPrestamo = new javax.swing.JMenuItem();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem2 = new javax.swing.JMenuItem();
        menuAyuda = new javax.swing.JMenu();
        menuItemAcerca = new javax.swing.JMenuItem();
        jMenuItem1 = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
        setTitle(":: SRM ::");
        setIconImage(new ImageIcon(this.getClass().getResource("/co/srm/vistas/iconos/logo.png")).getImage());

        jLabel1.setFont(new java.awt.Font("Tahoma", 3, 18));
        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/co/srm/vistas/iconos/SRM_banner_875x180 - copia.png"))); // NOI18N

        tablaNovedades.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        tablaNovedades.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "C.C.", "Cliente", "Estado", "Dias vencido", "Saldo", "Telefono/Celular"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Integer.class, java.lang.Object.class, java.lang.Object.class, java.lang.Integer.class, java.lang.Double.class, java.lang.String.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tablaNovedades.setSortable(false);
        jScrollPane1.setViewportView(tablaNovedades);

        jLabel2.setText("Total Novedades:");

        nNovedades.setEditable(false);

        jLabel4.setFont(new java.awt.Font("Tahoma", 3, 14));
        jLabel4.setText("Valor Recaudado Hoy:  $");

        recaudoHoy.setEditable(false);
        recaudoHoy.setFont(new java.awt.Font("Tahoma", 3, 12));

        jLabel5.setFont(new java.awt.Font("Tahoma", 3, 18));
        jLabel5.setText("Lista de Novedades ");

        menuAdministracion.setIcon(new javax.swing.ImageIcon(getClass().getResource("/co/srm/vistas/iconos/key-icon.png"))); // NOI18N
        menuAdministracion.setText("Administracion");

        menuItemPersona.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_P, java.awt.event.InputEvent.ALT_MASK));
        menuItemPersona.setIcon(new javax.swing.ImageIcon(getClass().getResource("/co/srm/vistas/iconos/persona.png"))); // NOI18N
        menuItemPersona.setText("Persona");
        menuItemPersona.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                menuItemPersonaActionPerformed(evt);
            }
        });
        menuAdministracion.add(menuItemPersona);

        jMenuItem3.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_E, java.awt.event.InputEvent.ALT_MASK));
        jMenuItem3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/co/srm/vistas/iconos/industria2.png"))); // NOI18N
        jMenuItem3.setText("Empresa");
        jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem3ActionPerformed(evt);
            }
        });
        menuAdministracion.add(jMenuItem3);

        backupDatosDB.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_B, java.awt.event.InputEvent.ALT_MASK));
        backupDatosDB.setIcon(new javax.swing.ImageIcon(getClass().getResource("/co/srm/vistas/iconos/mail-sent-icon3.png"))); // NOI18N
        backupDatosDB.setText("Backup Datos");
        backupDatosDB.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                backupDatosDBActionPerformed(evt);
            }
        });
        menuAdministracion.add(backupDatosDB);

        menuItemCerrar.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X, java.awt.event.InputEvent.ALT_MASK));
        menuItemCerrar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/co/srm/vistas/iconos/cerra.png"))); // NOI18N
        menuItemCerrar.setText("Cerrar Sesion");
        menuItemCerrar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                menuItemCerrarActionPerformed(evt);
            }
        });
        menuAdministracion.add(menuItemCerrar);

        jMenuBar1.add(menuAdministracion);

        menuPrestamos.setIcon(new javax.swing.ImageIcon(getClass().getResource("/co/srm/vistas/iconos/prestamo.png"))); // NOI18N
        menuPrestamos.setText("Prestamos");

        menuItemPrestamo.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.ALT_MASK));
        menuItemPrestamo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/co/srm/vistas/iconos/nuevoPrestamo.png"))); // NOI18N
        menuItemPrestamo.setText("Modulo Prestamos");
        menuItemPrestamo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                menuItemPrestamoActionPerformed(evt);
            }
        });
        menuPrestamos.add(menuItemPrestamo);

        pagosDeUnPrestamo.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_R, java.awt.event.InputEvent.ALT_MASK));
        pagosDeUnPrestamo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/co/srm/vistas/iconos/1312991521_banknote.png"))); // NOI18N
        pagosDeUnPrestamo.setText("Pagos del Prestamo");
        pagosDeUnPrestamo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                pagosDeUnPrestamoActionPerformed(evt);
            }
        });
        menuPrestamos.add(pagosDeUnPrestamo);

        jMenuBar1.add(menuPrestamos);

        jMenu1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/co/srm/vistas/iconos/pago.png"))); // NOI18N
        jMenu1.setText("Pagos");

        jMenuItem2.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_I, java.awt.event.InputEvent.ALT_MASK));
        jMenuItem2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/co/srm/vistas/iconos/nuevoPago.png"))); // NOI18N
        jMenuItem2.setText("Modulo Pagos");
        jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem2ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem2);

        jMenuBar1.add(jMenu1);

        menuAyuda.setIcon(new javax.swing.ImageIcon(getClass().getResource("/co/srm/vistas/iconos/help-icon.png"))); // NOI18N
        menuAyuda.setText("Ayuda");

        menuItemAcerca.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F2, 0));
        menuItemAcerca.setIcon(new javax.swing.ImageIcon(getClass().getResource("/co/srm/vistas/iconos/Software-icon.png"))); // NOI18N
        menuItemAcerca.setText("Acerca de");
        menuItemAcerca.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                menuItemAcercaActionPerformed(evt);
            }
        });
        menuAyuda.add(menuItemAcerca);

        jMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F4, java.awt.event.InputEvent.ALT_MASK));
        jMenuItem1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/co/srm/vistas/iconos/Close-icon.png"))); // NOI18N
        jMenuItem1.setText("Salir");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        menuAyuda.add(jMenuItem1);

        jMenuBar1.add(menuAyuda);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(29, 29, 29)
                        .addComponent(jLabel2)
                        .addGap(10, 10, 10)
                        .addComponent(nNovedades, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(107, 107, 107)
                        .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 181, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(10, 10, 10)
                        .addComponent(recaudoHoy, javax.swing.GroupLayout.PREFERRED_SIZE, 112, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(20, 20, 20)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel5)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 894, Short.MAX_VALUE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(jLabel1)))))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel5)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(4, 4, 4)
                        .addComponent(jLabel2))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(1, 1, 1)
                        .addComponent(nNovedades, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(1, 1, 1)
                        .addComponent(jLabel4))
                    .addComponent(recaudoHoy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(22, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void menuItemAcercaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_menuItemAcercaActionPerformed
        // TODO add your handling code here:
        new Acercade(this).setVisible(true);

    }//GEN-LAST:event_menuItemAcercaActionPerformed

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
        // TODO add your handling code here:
        int r = JOptionPane.showConfirmDialog(this, " Desea Realmente Salir del Programa ", "Advertencia", JOptionPane.YES_NO_OPTION);
         mDatos = new ManejadorDatosFinancieros();
        if (r == JOptionPane.YES_OPTION) {
           Date actual = new Date();
            Date ultima=null;
            DatosFinanciero dato = mDatos.UltimoDatoFinanciero();
            SimpleDateFormat formato = new SimpleDateFormat("yyyy-MM-dd");
            String fe_actual=formato.format(actual);
            if(dato!=null){
             ultima = dato.getFecha();
             if (fe_actual.equals(ultima.toString())) {
                 Double recuado_actual=dato.getRecaudo();
                 recuado_actual+=totalSesion;
                dato.setRecaudo(recuado_actual);
                mDatos.actualizarDatoFinanciero(dato);
            }
            }
            else {
                mDatos.guardarDatosFinanciero(totalSesion, new Date(), inicioSesion.userActual.getEmpresa());
            }
            
            System.exit(0);
        }
    }//GEN-LAST:event_jMenuItem1ActionPerformed

    private void menuItemPersonaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_menuItemPersonaActionPerformed
        // TODO add your handling code here:

        VentanaPersona vper = new VentanaPersona(this, true);
        vper.setVisible(true);

    }//GEN-LAST:event_menuItemPersonaActionPerformed

    private void menuItemPrestamoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_menuItemPrestamoActionPerformed
        // TODO add your handling code here:
        VentanaPrestamo vpre = new VentanaPrestamo(this, true);
        vpre.setVisible(true);

    }//GEN-LAST:event_menuItemPrestamoActionPerformed

    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
        // TODO add your handling code here:
        VentanaPago vpa = new VentanaPago(this, true);
        vpa.setVisible(true);
    }//GEN-LAST:event_jMenuItem2ActionPerformed

    private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem3ActionPerformed
        // TODO add your handling code here:
        VentanaEmpresa vem = new VentanaEmpresa(this, true);
        vem.setVisible(true);
    }//GEN-LAST:event_jMenuItem3ActionPerformed

    private void menuItemCerrarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_menuItemCerrarActionPerformed
        // TODO add your handling code here:
         mDatos = new ManejadorDatosFinancieros();
        int r = JOptionPane.showConfirmDialog(this, " Desea Realmente Cerrar Su Sesion ", "Advertencia", JOptionPane.YES_NO_OPTION);
        if (r == JOptionPane.YES_OPTION) {
            this.hide();
            Control.cerrarTodasLasVentanas();
            Date actual = new Date();
            Date ultima=null;
            DatosFinanciero dato = mDatos.UltimoDatoFinanciero();
            SimpleDateFormat formato = new SimpleDateFormat("yyyy-MM-dd");
            String fe_actual=formato.format(actual);
            if(dato!=null){
             ultima = dato.getFecha();
             if (fe_actual.equals(ultima.toString())) {
                 //Double recuado_actual=dato.getRecaudo();
                 //recuado_actual+=totalSesion;
                dato.setRecaudo(totalSesion);
                mDatos.actualizarDatoFinanciero(dato);
            }
            
            else {
                mDatos.guardarDatosFinanciero(totalSesion, new Date(), inicioSesion.userActual.getEmpresa());
            }
            }
                try {
                    new inicioSesion().setVisible(true);
                } catch (SQLException ex) {
                    Logger.getLogger(VentanaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
                } catch (UnsupportedLookAndFeelException ex) {
                    Logger.getLogger(VentanaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
                }


        }// fin del if
    }//GEN-LAST:event_menuItemCerrarActionPerformed

    private void pagosDeUnPrestamoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pagosDeUnPrestamoActionPerformed
        // TODO add your handling code here:
        new BusquedaPagos(this, true).setVisible(true);
    }//GEN-LAST:event_pagosDeUnPrestamoActionPerformed

    private void backupDatosDBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_backupDatosDBActionPerformed
        backupBaseDeDatos();
    }//GEN-LAST:event_backupDatosDBActionPerformed

    public static void listarNovedades() {
        Prestamo.EstadoActual estado = Prestamo.EstadoActual.VENCIDO;
        ManejadorPrestamo mP = new ManejadorPrestamo();
        List<Prestamo> prestamos = mP.buscarPrestamosByEstado(estado);
        configurarTablaNovedades();//Configurar tablas

        DefaultTableModel dtm = (DefaultTableModel) tablaNovedades.getModel();
        // "C.C.", "Cliente", "Estado", "Dias vencido", "Saldo", "Telefono/Celular"
        if (prestamos != null) {
            for (Prestamo p : prestamos) {
                int vencidos = Control.diasVencidos(new Date(), p.getFecha(), p.getPlazo());
                String cliente = p.getCliente().getNombres() + " " + p.getCliente().getApellidos();
                String telefonos = p.getCliente().getTelefono() + "/" + p.getCliente().getCelular();
                Object[] fila = {p.getCliente().getIdentificacion(), cliente, p.getEstadoActual(), vencidos, "$ " + p.getSaldoActual(), telefonos};
                dtm.addRow(fila);
            }
        }
        int totalNovedades = dtm.getRowCount();
        nNovedades.setText(String.valueOf(totalNovedades));


    }

    public static void configurarTablaNovedades() {
        tablaNovedades.getColumnModel().getColumn(0).setMaxWidth(95);
        tablaNovedades.getColumnModel().getColumn(0).setMinWidth(95);

        tablaNovedades.getColumnModel().getColumn(1).setMaxWidth(195);
        tablaNovedades.getColumnModel().getColumn(1).setMinWidth(195);
    }


    public void backupBaseDeDatos()
    {
     SimpleDateFormat dateformat = new SimpleDateFormat("ddMMyy");
        Date fecha=new Date();
        String dir=System.getProperty("user.home");
            try {
                  String xampp=backup.buscarPropiedad("xampp.dir");
                  String passMySql=backup.buscarPropiedad("db.password");
                  String userMySql=backup.buscarPropiedad("db.user");
                  String dbname=backup.buscarPropiedad("db.name");
                  String smtpHost=backup.buscarPropiedad("smtp.host");
                  String smtpPort=backup.buscarPropiedad("smtp.port");
                  String smtpUser=backup.buscarPropiedad("smtp.user");
                  String smtpPass=backup.buscarPropiedad("smtp.pass");
                  String smtpAut=backup.buscarPropiedad("smtp.auth");

                EnviarMailBackup mailSender=new EnviarMailBackup();
                String ruta=dir.replace("/", "\\")+"\\backup-" + dateformat.format(fecha.getTime()) +"-"+dbname+"-"+inicioSesion.userActual.getEmpresa().getNombre()+".sql";
                Runtime runtime = Runtime.getRuntime();
                File backupFile = new File(dir + "\\backup-"+ dateformat.format(fecha.getTime()) +"-"+dbname+"-"+inicioSesion.userActual.getEmpresa().getNombre()+".sql");
                /*backupFile se utiliza para indicarle la ubicacion y nombre del archivo que contendra el backup con la extencion .sql*/

                FileWriter fw = new FileWriter(backupFile);
                /*objeto que escribira sobre el backup archivo*/

                Process child = runtime.exec(xampp+" --opt --password="+passMySql+" --user="+userMySql+" "+dbname);
                /*Process es el que ejecuta el comando para buscar el mysqldump.exe*/
                InputStreamReader irs = new InputStreamReader(child.getInputStream());
                BufferedReader br = new BufferedReader(irs);
                /* se escribe sobre el archivo*/
                String line;
                while ((line = br.readLine()) != null) {
                    fw.write(line + "\n");
                }
                fw.write("--Usuario que realizo el backup\n");
                fw.write("-- ID: "+inicioSesion.userActual.getIdentificacion()+" USUARIO: "+inicioSesion.userActual.getLogin() );
                fw.close();
                irs.close();
                br.close();

                mailSender.enviarCorreoAdjunto(ruta,smtpHost,smtpUser,smtpPort,smtpAut,smtpPass);
                JOptionPane.showMessageDialog(null, "Backup generado correctamente.", "Exito", JOptionPane.INFORMATION_MESSAGE);
            } catch (Exception e) {
                e.printStackTrace();
                JOptionPane.showMessageDialog(null, "Error no se genero el archivo por el siguiente motivo: " + e.getMessage(), "Verificar", JOptionPane.ERROR_MESSAGE);
            }

    }

    public boolean existeBackup()
    {
        boolean existe=false;
        Date fecha=new Date();
         SimpleDateFormat dateformat = new SimpleDateFormat("ddMMyy");
          String dbname=backup.buscarPropiedad("db.name");
         String dir=System.getProperty("user.dir");
         File backupFile = new File(dir + "\\backup-"+ dateformat.format(fecha.getTime()) +"-"+dbname+"-"+inicioSesion.userActual.getEmpresa().getNombre()+".sql");
         if(backupFile.exists())
             existe=true;
         return existe;

    }
    /**
     * @param args the command line arguments
     */
//    public static void main(String args[]) {
//        java.awt.EventQueue.invokeLater(new Runnable() {
//            public void run() {
//                new VentanaPrincipal().setVisible(true);
//            }
//        });
//    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JMenuItem backupDatosDB;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JMenuItem jMenuItem2;
    private javax.swing.JMenuItem jMenuItem3;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JMenu menuAdministracion;
    private javax.swing.JMenu menuAyuda;
    private javax.swing.JMenuItem menuItemAcerca;
    private javax.swing.JMenuItem menuItemCerrar;
    private javax.swing.JMenuItem menuItemPersona;
    private javax.swing.JMenuItem menuItemPrestamo;
    private javax.swing.JMenu menuPrestamos;
    private static javax.swing.JTextField nNovedades;
    private javax.swing.JMenuItem pagosDeUnPrestamo;
    public static javax.swing.JTextField recaudoHoy;
    private static org.jdesktop.swingx.JXTable tablaNovedades;
    // End of variables declaration//GEN-END:variables
}
